home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 1.iso / ARGONET / PD / FILER / TARSRC.SPK / c / freespace < prev    next >
Text File  |  1991-01-06  |  1KB  |  61 lines

  1. #include <limits.h>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include "os.h"
  5.  
  6.  
  7. void ChkError(os_error *Error) {
  8.   if (Error != NULL) {
  9.     fprintf(stderr,"OS-Error: %s\n",Error->errmess);
  10.     exit(1);
  11.   }
  12. } /* ChkError */
  13.  
  14.  
  15. int FreeSpace(char *FileName, int InitLen, int InitInc) {
  16.   int FileHandle,reallen,len,inc;
  17.   os_error *Error;
  18.   os_regset Regs;
  19.  
  20.   do {
  21.     Regs.r[0] = 0x83;
  22.     Regs.r[1] = (int)FileName;
  23.     ChkError(os_find(&Regs));
  24.     FileHandle = Regs.r[0];
  25.     Regs.r[0] = 6;
  26.     Regs.r[1] = FileHandle;
  27.     len = InitLen;
  28.     reallen = InitLen;
  29.     inc = InitInc;
  30.     do {
  31.       Regs.r[2] = len + inc;
  32.       Error = os_args(&Regs);
  33.       if (Error == NULL) {
  34.         fprintf(stderr,"\rFree Space = %d",reallen);
  35.         reallen = Regs.r[2];
  36.         len = len + inc;
  37.         if (reallen < len)
  38.           inc = 0;
  39.       } else {
  40.         inc = 0;
  41.       }
  42.     } while (inc > 0);
  43.     Regs.r[0] = 0;
  44.     Regs.r[1] = FileHandle;
  45.     ChkError(os_find(&Regs));
  46.     InitInc /= 4;
  47.     InitLen = reallen;
  48.   } while (InitInc > 1024);
  49.   remove(FileName);
  50.   return reallen;
  51. } /* FreeSpace */
  52.  
  53.  
  54. int main(int argc, char **argv) {
  55.   int Len;
  56.  
  57.   Len = FreeSpace(argv[1],0,512000);
  58.   fprintf(stderr,"\rFree Space = %d\n",Len);
  59. }
  60.     
  61.